home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / parprnt.lha / ...cd / The_Archives / programmers / par-prt.asm
Encoding:
Assembly Source File  |  1980-02-06  |  1.7 KB  |  46 lines

  1. *******************************************************************************
  2. * Parallel Printer Output
  3. * ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  4. *    Will send ascii text to parallel port via hardware control. For use 
  5. * when system is not available for text redirection to printer.
  6. *
  7. * INPUTS ; a0 = Ptr to ASCIIZ Text to print 
  8. * OUTPUTS; d0 = Error code.. if d0 =-1 the printing was aborted 
  9. *        ELSE d0=0 All text printed okay
  10. *******************************************************************************
  11.         
  12. PrintTest:    lea    PrintText(pc),a0 ; ptr to text to print
  13.         bsr.s    PrintAscii
  14.         rts
  15.         
  16. PrintAscii:    movem.l    a1-a3/d1-d2,-(sp) ;preserve trashed regs
  17.         lea    $bfd000,a2    ; Ptr to Print signal clear
  18.         lea    $1101(a2),a1    ; Ptr to Data Direction B
  19.         lea    $200(a1),a3    ; Ptr to Data Register B
  20.         moveq    #0,d0        ; erase d0
  21.         move.l    d0,d1        ; erase d1
  22.         move.b    (a3),d1        ; save (PIAA) Data Direction B
  23.         move.b    (a1),d2        ; save (PIAA) Data Register B
  24.         move.b    #-1,(a3)    ; set printer direction
  25.         
  26. ByteLoop:    move.b    (a0)+,d0    ; read a byte character to print
  27.         beq.s    PrintDone    ; was it a NULL byte.. end of text?
  28. PrintChar    move.b    d0,(a1)        ; move data dir for parallel interface
  29.  
  30. PrtWait        btst    #6,-$100(a1)    ; left mouse ?
  31.         beq.s    PrintAborted    ; if pressed abort printing...
  32.         
  33.         btst    d1,(a2)        ; wait until print signal clear
  34.         bne.s    PrtWait        ; has byte been printed?
  35.         bra.s    ByteLoop    ; keep on looping
  36.  
  37. PrintAborted:    move.w    #$f0f,$dff180
  38.         moveq    #-1,d0        ; d0=error code
  39. PrintDone    move.b    d1,(a3)        ; restore old PIAA Data Direction B
  40.         move.b    d2,(a1)        ; restore old PIAA Data Register B
  41.         movem.l    (sp)+,a1-a3/d1-d2 ; restore trashed registers
  42.         rts
  43.  
  44. PrintText:    dc.b    $a,'Parallel Printer TEST! 1234567890 Parallel Printer TEST! 1234567890 '
  45.         dc.b    0
  46.